// 引入请求工具
const { get, post } = require('../../utils/request');

Page({
  data: {
    isAgree: false // 是否同意协议
  },
  
  onLoad() {
    // 页面加载时检查是否已有token
    const app = getApp();
    if (app.globalData.token) {
      // 如果已有token，跳转到首页
      wx.switchTab({
        url: '/pages/index/index'
      });
    }
  },
  
  // 微信登录
  wxLogin() {
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    
    console.log('开始微信登录流程');
    wx.showLoading({
      title: '登录中...',
    });
    
    // 获取微信登录凭证code
    wx.login({
      success: async (res) => {
        console.log('wx.login success:', res);
        if (res.code) {
          try {
            console.log('准备请求后端登录接口，code:', res.code);
            // 使用修改后的post方法发送请求，使用form表单格式
            const result = await post('/api/user/wxLogin', {
              code: res.code
            }, true); // 第三个参数true表示使用form格式
            
            console.log('Login response:', result);
            if (result.code === 200 && result.data && result.data.token) {
              // 登录成功，保存token
              const app = getApp();
              app.globalData.token = result.data.token;
              wx.setStorageSync('token', result.data.token);
              console.log('已保存token:', result.data.token);
              
              wx.hideLoading();
              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 1500,
                success: () => {
                  setTimeout(() => {
                    wx.switchTab({
                      url: '/pages/index/index'
                    });
                  }, 1500);
                }
              });
            } else {
              wx.hideLoading();
              wx.showToast({
                title: result.message || '登录失败',
                icon: 'none'
              });
            }
          } catch (err) {
            console.error('Login exception:', err);
            wx.hideLoading();
            wx.showToast({
              title: '登录失败，请重试',
              icon: 'none'
            });
          }
        } else {
          wx.hideLoading();
          wx.showToast({
            title: '获取用户登录态失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('wx.login fail:', err);
        wx.hideLoading();
        wx.showToast({
          title: '获取用户登录态失败',
          icon: 'none'
        });
      }
    });
  },
  
  // 获取手机号
  getPhoneNumber(e) {
    console.log('获取手机号', e);
    
    if (!this.data.isAgree) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    
    if (e.detail.errMsg !== 'getPhoneNumber:ok') {
      console.log('用户拒绝授权或获取失败', e.detail.errMsg);
      wx.showToast({
        title: '获取手机号失败，请重试',
        icon: 'none'
      });
      return;
    }
    
    // 显示加载中
    wx.showLoading({
      title: '登录中...',
    });
    
    // 登录获取code
    wx.login({
      success: (loginRes) => {
        if (loginRes.code) {
          console.log('获取到code:', loginRes.code);
          console.log('获取到手机号信息:', e.detail);
          
          // 先通过wxLogin获取token
          post('/api/user/wxLogin', {
            code: loginRes.code
          }, true).then(wxLoginRes => {
            if (wxLoginRes.code === 200 && wxLoginRes.data && wxLoginRes.data.token) {
              // 保存token
              const app = getApp();
              app.globalData.token = wxLoginRes.data.token;
              wx.setStorageSync('token', wxLoginRes.data.token);
              console.log('已保存token:', wxLoginRes.data.token);
              
              // 再请求获取手机号接口
              return post('/api/user/getPhoneNumber', {
                code: e.detail.code
              }, true);
            } else {
              throw new Error(wxLoginRes.message || '登录失败');
            }
          }).then(res => {
            console.log('获取手机号结果:', res);
            
            wx.hideLoading();
            if (res.code === 200 && res.data) {
              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 1500,
                success: () => {
                  setTimeout(() => {
                    wx.switchTab({
                      url: '/pages/index/index'
                    });
                  }, 1500);
                }
              });
            } else {
              wx.showToast({
                title: res.message || '登录失败',
                icon: 'none'
              });
            }
          }).catch(err => {
            console.error('获取手机号异常:', err);
            wx.hideLoading();
            wx.showToast({
              title: '登录失败，请重试',
              icon: 'none'
            });
          });
        } else {
          wx.hideLoading();
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('wx.login fail:', err);
        wx.hideLoading();
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  // 切换同意协议状态
  toggleAgree() {
    this.setData({
      isAgree: !this.data.isAgree
    });
  },
  
  // 显示用户协议
  showUserAgreement() {
    wx.showModal({
      title: '用户协议',
      content: '感谢您使用我们的小程序。使用本小程序表示您已同意我们的用户协议。',
      showCancel: false
    });
  },
  
  // 显示隐私政策
  showPrivacyPolicy() {
    wx.showModal({
      title: '隐私政策',
      content: '我们非常重视您的隐私保护。您的个人信息仅用于提供更好的服务体验。',
      showCancel: false
    });
  }
})